package com.tech.thread.juc;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
 * @Description:
 * @Author: zl
 * @Date: 2019/7/12 15:39
 */
public class CyclicBarrierTest {
    //1、CyclicBarrier默认的构造方法是CyclicBarrier（int parties），其参数表示屏障拦截的线程数量，
    static CyclicBarrier c = new CyclicBarrier(2);
    public static void main(String[] args) throws BrokenBarrierException, InterruptedException {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //2.1、子线程调用await方法告诉CyclicBarrier我已经到达了屏障，然后当前线程被阻塞。
                    c.await();
                } catch (Exception e) {
                }
                System.out.println(1);
            }
        }).start();
        try {
            //2.2、主线程调用await方法告诉CyclicBarrier我已经到达了屏障，然后当前线程被阻塞。
            c.await();
        } catch (Exception e) {
        }
        // 线程开门：所有被拦截的线程继续运行
        System.out.println(2);
    }
}
